<?php
// 这是系统自动生成的公共文件
/**
 * 公共发送短信验证码
 */
if (!function_exists('send_message')) {
    /**
     * 发送手机短信验证码
     * @param $mobile
     * @param $code
     * @return bool|string
     */
    function send_message($mobile,$code){
        # 帐号信息、 放入config
        $smsapi = config('account.smsbao.url');
        $user = config('account.smsbao.username');
        $pass = config('account.smsbao.password') ?: config('account.smsbao.api_key') ;
        $content="【1910A】尊敬的用户，您正在在品优购平台进行帐号注册，您的验证为:{$code},验证有效期为5分钟、过期失效、请勿泄漏";//要发送的短信内容
        ;//要发送短信的手机号码
        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$mobile."&c=".urlencode($content);
        # 发送请求 file_get_contents,curl
//        $result = file_get_contents($sendurl);
        # 用curl发送请求
        return curl_request($sendurl);
    }
}
/**
 * curl 发送请求
 */
if (!function_exists('curl_request')) {
    /**
     * 发送请求的方法
     * @param $url
     * @param string $post_data
     * @param string $method
     * @param string $header
     * @param string $type
     * @return bool|string
     */
    function curl_request($url,$post_data='',$method='get',$header='',$type='http'){
        # 初始化
        if ($url == '') {
            return  true;
        }
        $ch = curl_init($url);
        # 默认是get请求。如果是post请求 设置请求方式和请求参数
        if (strtolower($method) == 'post') {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        }
        //如果是https协议，禁止从服务器验证本地证书
        if(strtolower($type) == 'https'){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        }
        //发送请求，获取返回结果
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $res = curl_exec($ch);
        //关闭请求
        curl_close($ch);
        return $res;
    }
}

/**
 * 密码加密的公共方法
 */
if (!function_exists('encrypt_password')) {
    /**
     * @param $password
     * @return string
     */
    function encrypt_password($password){
        $salt = config('account.self_platform.salt_home');
        return md5($salt.$password.$salt);
    }
}

/**
 * 递归实现无限极分类父子结构数据
 */
if (!function_exists('recursion_handle_data')) {
    /**
     *
     * @param $data *数据
     * @param int $pid *父级id
     * @return array
     */
    function recursion_handle_data($data,$pid=0){
        $child = [];
        foreach ($data as $value) {
            if ($value['pid'] == $pid) {
                $child[$value['id']] = $value;
                $child[$value['id']]['children'] = recursion_handle_data($data,$value['id']);
            }
        }
        return  $child;
    }
}

/**
 * 递归实现无限极分类树形结构
 */
if (!function_exists('recursion_tree')) {
    /**
     *
     * @param $data *数据
     * @param int $pid *父级id
     * @return array
     */
    function recursion_tree($data,$pid=0,$level=0){
        static $arr = [];
        foreach ($data as $key => $value) {
            if ($value['pid'] == $pid) {
                $value['level'] =$level;
                $arr[] =$value;
                unset($data[$key]);
                recursion_tree($data,$value['id'],$level+1);
            }
        }
        return  $arr;
    }
}
/**
 * 加密手机号
 */
if (!function_exists('encrypt_phone')) {
    /**
     * @param $phone
     * @return string|string[]
     */
    function encrypt_phone($phone){

        return  substr_replace($phone,'****',3,4);
    }
}


/**
 * 公共响应方法
 */
if (!function_exists('responses')) {
    /**
     * 公共响应方法
     * @param $code
     * @param $msg
     * @param $data
     * @return \think\response\Json
     */
    function responses($code,$msg,$data){
        return json(['code' => $code,'msg' => $msg,'data' => $data]);
    }
}
/**
 * 公共响应成功方法
 */
if (!function_exists('success')) {
    /**
     *
     * @param $data
     * @param int|int $code
     * @param string $msg
     * @return \think\response\Json
     */
    function success(array $data=[], int $code=200, string $msg='ok'){
        return responses($code,$msg,$data);
    }
}
/**
 * 公共响应失败方法
 */
if (!function_exists('fail')) {
    /**
     * @param string $code
     * @param $msg
     * @param $data
     * @return \think\response\Json
     */
    function fail($code='2001',$msg='参数不正确',$data = []){
        return responses($code,$msg,$data);
    }
}
